/*
 * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @Date: 2023-11-24 15:38:32
 * @LastEditors: ipk518 18163976442@163.com
 * @LastEditTime: 2024-01-25 16:49:33
 * @FilePath: \WingsUpdater-main\inc\DataTransmission\Proto\WingsTcpUdpProto.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */

#pragma once
#include <cstdint>
#include <string>
#include <vector>

#define WINGS_HEADER    0xaa55
#define WINGS_QUERY     0x2022
#define WINGS_START     0x2023
#define WINGS_UPDATE    0x2024
#define WINGS_TAIL      0x0022
#define WINGS_MAX_SIZE  4096
#define WINGS_VERSION   0x10000


#define DSP_HEADER  0x55aa
#define WINGS_MAX_SIZE  4096*10 //40k
// class
#pragma pack(push)
#pragma pack(1)
struct WingsUpdateHeaderTcpUdp 
{
    // 大字节序。
    // 包头。
    uint16_t header = 0xaa55;
    //包类型
    uint16_t cmdType;
    // 升级包的设备类型。
    uint32_t type = 0;
    // 数据域的大小
    uint32_t dataSize;
    // 包尾。
    uint32_t tail = 0x0022;
    // crc校验,数据实体
    uint32_t crc32;
    // uint8_t dataEntity[WINGS_MAX_SIZE+4];
};


struct WingsUpdateReplyTcpUdp 
{
    // 大字节序。
    // 包头。
    uint16_t header = 0xaa55;
    //包类型
    uint16_t cmdType;
    // 升级包的设备类型。
    uint32_t type = 0;
    // 数据域的大小
    uint32_t dataSize;
    // 包尾。
    uint32_t tail = 0x0022;
    // crc校验,数据实体
    uint32_t crc32;
    uint8_t dataEntity[10];
};
#pragma pack(pop)

struct WingsInternalWrapper final 
{
    WingsInternalWrapper() = default;
    ~WingsInternalWrapper() = default;
    std::string name;
    std::vector<uint8_t> byteArray;
};
